#ifndef INDEX_H_INCLUDED
#define INDEX_H_INCLUDED
#include "Table.h"
#include <vector>
using namespace std;
class Chash_string{
private:
    //结点的定义
    vector<string> key[2000];//hash之前的值
    vector<int> id[2000];//

public:
    vector<int> * search(string key);
    void insert(string key, int id);
    void saveToFile(FILE * fout);
    void recoverFromFile(FILE * fin);
    int typeId;
};

Chash_string* Hash_string_CreateIndex(Table *source, int AttributeID);
//建立名字为TableName_AttributeID.index的文件保存索引建立结果
vector<int> Hash_string_Search(Chash_string hashtable, string value);

class Chash_int{
private:
    //结点的定义
    vector<int> key[2000];//hash之前的值
    vector<int> id[2000];//

public:
    vector<int> * search(int key);
    void insert(int key, int id);
    void saveToFile(FILE * fout);
    void recoverFromFile(FILE * fin);
    int typeId;
};

Chash_int* Hash_int_CreateIndex(Table *source, int AttributeID);
//建立名字为TableName_AttributeID.index的文件保存索引建立结果
vector<int> Hash_int_Search(Chash_int hashtable, int value);
unsigned int BKDRHash(char *str);


#endif // INDEX_H_INCLUDED
